Віртуальні функції, поліморфізм та пізнє зв’язування

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2006
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Інші
Група:
КН

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „ Львівська політехніка “ Кафедра ІСМ  Звіт про виконання лабораторної роботи № 6 з курсу „Технології проектування програмних систем” на тему: «Віртуальні функції, поліморфізм та пізнє зв’язування» Львів-2006 Мета роботи: вивчення поліморфізму класів та механізму його підтримки за допомогою віртуальних функцій. Порядок роботи 1. Ознайомитися з теоретичним матеріалом про наслідування класів у Borland C++. 2. Проаналізувати результати роботи фрагментів програм у приведених прикладах наслідування класів. 3. Оголосити базовий клас з необхідними полями, конструкторами, деструктором, методами. Оголосити похідний клас. Програма та результати її виконання #include <vcl.h> #include <iostream.h> #include <conio.h> //Для функції gotoxy(); #include <stdlib.h> class point { protected: int x, y; // Координати символа. public: point(int xi = 0, int yi = 0); // Конструктор. int& givex(void); int& givey(void); virtual void show(void); virtual void move(int xn = 0, int yn = 0); private: virtual void hide(); }; point::point (int xi, int yi) { x = xi; y = yi; } // int& point::givex(void) { return x; } // Доступ до х. int& point::givey(void) { return y; } // Доступ до у. // Зобразити символ на екрані. void point::show(void) { gotoxy(x,y); cout << "*"; } // Забрати з екрану зображення символа. void point::hide(void) { gotoxy(x,y); cout << " "; } // Перемістити символ в нове місце экрана. void point::move (int xn, int yn) { hide(); x = xn; y = yn; show(); } class star: public point { protected: int rad; // Довжина променів зірки. int vis; // Видимість зірки на ерані public: // Конструктор класу STAR: star (int xi, int yi, int ri): point(xi,yi) { vis = 0; rad = ri; } ~star() // Деструктор класу STAR. { hide(); // Забрати з екрану зображення зірки. } virtual void show(); // Зобразити зірку на екрані дисплея. virtual void hide(); // Забрати з екрану зображення зірки // Перемістити зображення: virtual void move(int xn, int yn) { hide(); // Забрати з екрану старе зображення. // Змінити координати центру зірки: x = xn; y = yn; show(); // Вивести зображення в новому місці. } // Змінити розмір зображення плями: void vary(float dr) { float a; hide(); // Забрати з екрану старе зображення. // Вирахувати новий радіус: a = dr * rad; if (a <= 0) rad = 0; else rad = (int)a; show(); // Зобразити зірку на екрані. } int& giver(void) // Доступ до довжин променів. { return rad; } }; void star::show() // Зобразити зірку на екрані дисплея. { int i; // Якщо зірка не зображена на екрані: if (vis == 0) { // Зобразити зірку: gotoxy(x,y); cout << "*"; for (int i=1;i<=rad;i++) { gotoxy(x+i,y); cout << "*"; gotoxy(x-i,y); cout << "*"; gotoxy(x,y+i); cout << "*"; gotoxy(x,y-i); cout << "*"; } for (i=-rad;i<=rad;i++) { gotoxy(x+i,y+i); cout << "*"; gotoxy(x-i,y+i); cout << "*"; } vis = 1; } } void star::hide() // Забрати з екрану зображення зірки { int i; if (vis == 0) // нема що забирати. return; // Стерти з екрану зображення: gotoxy(x,y); cout << " "; for (int i=1;i<=rad;i++) { gotoxy(x+i,y); cout << " "; gotoxy(x-i,y); cout << " "; gotoxy(x,y+i); cout << " "; gotoxy(x,y-i); cout << " "; } for (i=-rad;i<=rad;i++) {gotoxy(x+i,y+i); cout << " "; gotoxy(x-i,y+i); cout << " "; } vis = 0; } //--------------------------------------------------------------------------- int x,y,z; int main() { randomize(); x=random(6); randomize(); star A(7,7,x); A.show(); getch (); A.hide(); randomize; x=random(4); star B(41,12,x); B.show(); getch (); } Рис.1. Вигляд вікна програми після виконання Висновки Під час виконання лабораторної роботи я ознайомився з поліморфізмом віртуальних функцій та навчився його використтовувати на практиці.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!